package com.example.testing.launchmode;

import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.example.testing.R;
import com.example.testing.lifecycle.DialogActivity;
import com.example.testing.lifecycle.NewActivity;
import com.example.testing.lifecycle.TransparentActivity;

/**
 * standard:标准模式，这也是系统的默认行为。每次启动一个Activity都会创建一个新的实例，不管这个例子是否已经存在。
 * 被创建的实例的生命周期符合经典情况下的Activity生命周期，它的onCreate、onStart、onResume等方法都会被调用。
 * 这是一个经典的多实例实现，一个任务栈可以有多个实例，每个实例也可以属于不同的任务栈。
 * 在这种模式喜爱，谁启动了这个Activity，那么这个Activity就运行在启动它的那个Activity所在的栈中。
 * 比如Activity A启动了Activity B（B是标准模式），那么B就会进入到A所在的栈中
 * 当我们使用ApplicationContext去启动一个standard模式的Activity就会报错，因为非Activity类型的Context没有所谓的任务栈，解决这个问题的
 * 方法就是为待启动Activity指定FLAG_ACTIVITY_NEW_TASK标记位，这样启动的时候就会为它创建一个新的任务栈，这个时候启动Activity实际上
 * 是以singleTask模式启动的
 */
public class StandardActivity extends Activity {
    private static final String TAG = "StandardActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.e(TAG, "onCreate: taskId:" + getTaskId() );
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_launchmode_standrad);
        findViewById(R.id.tv_launcher_mode).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(StandardActivity.this, SingleTopActivity.class);
                startActivity(intent);
            }
        });
    }

    @Override
    protected void onRestart() {
        Log.e(TAG, "onRestart: ");
        super.onRestart();
    }

    @Override
    protected void onStart() {
        Log.e(TAG, "onStart: ");
        super.onStart();
    }

    @Override
    protected void onResume() {
        Log.e(TAG, "onResume: ");
        super.onResume();
    }

    @Override
    protected void onPause() {
        Log.e(TAG, "onPause: ");
        super.onPause();
    }

    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        Log.e(TAG, "onRestoreInstanceState:");
        String name = (String) savedInstanceState.get("name");
        Toast.makeText(this, "name:" + name, Toast.LENGTH_SHORT).show();
        super.onRestoreInstanceState(savedInstanceState);
    }
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        Log.e(TAG, "onSaveInstanceState: ");
        super.onSaveInstanceState(outState);
        outState.putString("name", "josan");
    }

    @Override
    protected void onStop() {
        Log.e(TAG, "onStop: ");
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        Log.e(TAG, "onDestroy: ");
        super.onDestroy();
    }
}
